/**
 * window工具类
 */
var WindowUtil = {
    /**************** 本地缓存(保存的数据没有过期时间，直到手动去删除) start ****************/
    /**
     * 添加本地缓存
     * @param key
     * @param val
     */
    setLocalStorage: function (key,val){
        if(Object.prototype.toString.call(val) == '[object String]'){
            val = JSON.stringify(val);
        }
        localStorage.setItem(key,val);
    },
    /**
     * 获取本地缓存
     * @param key
     * @returns {string}
     */
    getLocalStorage: function (key){
        return localStorage.getItem(key);
    },
    /**
     * 移除本地缓存
     * @param key
     */
    removeLocalStorage: function (key){
        return localStorage.removeItem(key);
    },
    /**************** 本地缓存 end   ****************/
    /**************** cookie(可以设置保存日期) start ****************/
    /**
     * 写入cookie
     * @param name
     * @param value
     * @param days 默认30天
     */
    setCookie: function(name, value , days){
        days = days === undefined ? 30 : days; //此 cookie 将被保存 30 天
        var exp = new Date();
        exp.setTime(exp.getTime() + days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    },
    /**
     * 读取cookie
     * @param name
     * @returns
     */
    getCookie: function(name){
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null)
            return unescape(arr[2]);
        return null;
    },
    /**
     * 删除cookie
     * @param name
     */
    delCookie: function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = this.getCookie(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    },
    /**************** cookie end   ****************/
    /**************** sessionStorage（在关闭窗口或标签页之后将会删除这些数据） start ****************/
    /**
     * 添加键和值，如果对应的值存在，则更新该键对应的值
     * @param keyname
     * @param value
     */
    setSessionStorage: function (keyname, value){
        sessionStorage.setItem(keyname, value);
    },
    /**
     * 返回指定键的值
     * @param keyname
     * @returns {string}
     */
    setSessionStorageByName: function (keyname){
        return sessionStorage.getItem(keyname);
    },
    /**
     * 返回存储对象中位置为 position 的键的名称
     * @param position
     * @returns {string}
     */
    getSessionStorageByPosition: function (){
        return sessionStorage.key(position);
    },
    /**
     * 移除键
     * @param keyname
     */
    removeItemSessionStorage: function (keyname){
        sessionStorage.removeItem(keyname);
    },
    /**
     * 清除存储对象中所有的键
     */
    clearSessionStorage: function (){
        sessionStorage.clear();
    },
    /**************** sessionStorage end   ****************/
    /**************** 定时器 start ****************/
    setTimeout: function (fun,time,data){
        var timeid = window.setTimeout(function (){
            fun(data);
            window.clearTimeout(timeid);
        },time);
    },
    setInterval: function (fun,time){
        return window.setInterval(fun,time);
    },
    clearInterval: function (timeid){
        //去掉定时器的方法
        window.clearInterval(timeid);
    },
    /**************** 定时器 end   ****************/
}